import router from './router'
import store from '@/store'// getters在根vuex上,所以直接引index就行
// import store from './store'
// import { Message } from 'element-ui'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import getPageTitle from '@/utils/get-page-title'
// import { getToken } from '@/utils/auth' // get token from cookie
// import getPageTitle from '@/utils/get-page-title'

NProgress.configure({ showSpinner: false }) // NProgress Configuration   进度条

const whiteList = ['/login', '/404'] // no redirect whitelist

// 全局前置守卫,通过token决定页面跳转
router.beforeEach(async (to, from, next) => {
  NProgress.start()// 进度条开启
  const token = store.getters.token
  if (token) { // 登录,有token
    if (to.path === '/login') {
      next('/')
      NProgress.done()// 重定向,就会导致上一次路由中断,启动的进度条需要手动关闭
      // 重定向会导致路由守卫再次执行,再次开启一个进度条,跳转后关闭
    } else {
      // 先next() 不然 token过期, 带回的未遂地址 不是当前路由页面, 先让路由跳转再请求用户信息.
      next()
      // 没有name,发异步请求获取{name:xxx,profi:xxx}
      if (!store.getters.name) {
        await store.dispatch('user/getUserProfiActions')
      }
    }
  } else { // 未登录,没token
    if (whiteList.includes(to.path)) next()
    else {
      next('/login')
      NProgress.done()
    }
  }
})

router.afterEach((to, from) => {
  // finish progress bar
  NProgress.done()// 进度条关闭

  // 网页切换完毕,再设置当前切换完毕的这个页面的标题
  // console.log(to)//运行时的路由对象信息,包含路由规则数组里的对象
  document.title = getPageTitle(to.meta.title)
})
